ELK 정리중
ELK (Elasticsearch, Logstash, Kibana)를 통 해 애플리케이션 혹은 시스템의 로그들을 수집하여 검색 및 분석을 할 수 있는 환경을 구성할 수 있다.
Logstash
파일, TCP, HTTP 등의 다양한 입력 소스를 통해들어 오는 데이터를 수집할 수 있는 파이프라인을 제공한다. 들어오는 데이터를 가공할 수 있으며, Elasticsearch로 데이터를 전송할 수 있다.
설치
사전 조건
Logstash 설치를 위해선 Java 8이 설치되어 있어야 한다. Java 8설치 유무를 확인하기 위해 아래의 명령어를 실행한다. 만약 Java 8이 설치 되어 있지 않다면, Java 8 다운로드페이지를 통해 다운로드 하여 설치한다.
java version 확인
java -version
java version 확인 결과
java version "1.8.0_65"
Java(TM) SE Runtime Environment (build 1.8.0_65-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.65-b01, mixed mode)
(*위의 Java version 값은 로컬 환경에 설치된 Java에 따라 다를 수 있다.)
설치 및 설정
Logstash 설치를 위한 설치 파일을 직접 다운로드할 수 있다.
Binary 파일을 통한 설치
윈도우 환경에 설치를 진행하기 위한 ZIP 파일을 다운로드하여 설치하고자 하는 경로에 압축을 풀면 된다.
리눅스 환경
유닉스 환경
맥 환경
Homebrew를 통해 Logstash를 설치 할 수 있다. 설치를 위해 아래의 명령어를 실행한다.
brew install logstash
구성
(* 출처: www.elastic.co)
위의 이미지에서 볼 수 있듯이 Logstash는 기본적으로 input, filter 그리고 out이라는 구성요소를 가지고 있다. Input과 output은 필수 요소이고 filter는 필요에 따라 구성할 수 있다. 아래의 명령어를 통해 콘솔을 통한 입/출력 하는 가장 기본적인 구성으로 Logstash를 실행할 수 있다.
bin/logstash -e 'input {stdin { } } output { stdout { } } '
(* 위에서 사용은 -e
옵션은 Logstash의 설정을 명령어를 통해 직접 입력 할 수 있게 해준다.)
위의 명령어를 실행한 후, 명령어 창에 hello world
를 입력하면 입력한 hello world
가 바로 출력되는 것을 볼 수 있다.
기본 설정 구성
위에서 언급한 것처럼 Logstash 설정 파일은 input, filter 그리고 output으로 구성이 되어 있다. 아래는 템플릿으로 사용 가능한 설정 파일 내용이다.
# The # character at the beginning of a line indicates a comment. Use
# comments to describe your configuration.
input {
}
# The filter part of this file is commented out to indicate that it is
# optional.
# filter {
#
# }
output {
}
Input
File
Logstash가 설치된 로컬 환경에 존재하는 파일의 내용을 input으로 설정하여 처리할 수 있다. 아래는 로컬 파일을 처리하기 위한 설정의 예이다.
input {
file {
path => "/tmp/access_log"
start_position => "beginning"
}
}